home *** CD-ROM | disk | FTP | other *** search
/ KeyGen Studio 2002 / KeyGen_Studio_2002.iso / Tutorials / Dos CrackMes / com / ACPIZER.ZIP / Soln / FUCKMEK.ASM
Encoding:
Assembly Source File  |  1998-04-23  |  10.8 KB  |  214 lines

  1. ; I've found a little bug in acpizer's f-uckme.
  2. ; If you enter too long (>28) password, than, the end of password will
  3. ; overwrite the checksum of your password in memory, so i've created
  4. ; a lame keygen for acpizer's f-uckme
  5. ; maybe it's illegal, but it's not a patch, it's a password and it worx! =)
  6. ; the idea is - enter any 28 chars, and this keygen will generate 4 chars
  7. ; from this 28 chars and add it into the end of our password and writes into
  8. ; file. When your enter the password from this file - last 4 chars will
  9. ; overwrite password checksum in memory.
  10. ;
  11. ;                                            (q) hijaq [UCL]/[rPG] #ucl'98
  12.  
  13. .386c
  14. seg_a           segment byte public use16
  15.                 assume  cs:seg_a, ds:seg_a
  16.  
  17.  
  18.                 org     100h
  19.  
  20. f_uckme         proc    far
  21.  
  22. start:
  23.                 mov     ah,09h
  24.                 mov     dx,offset data_12
  25.                 int     21h
  26.  
  27.                 mov     ax,0A00h
  28.                 mov     dx,offset InpBuf
  29.                 int     21h
  30. ;remove 0Dh from the end of entered name
  31.                 mov     cx,0ffffh
  32.                 mov     al,0Dh
  33.                 mov     di,offset cs:data_3
  34.                 repnz   scasb
  35.                 dec     di
  36.                 mov     byte ptr [di],20h
  37.  
  38. ; generating checksum of password and writing it after our inputted name...
  39. NoNeedOfCheck:
  40.               pushad                          ; Save all regs
  41.               finit                           ; Initialize math uP
  42.               fldpi                           ; Push Pi onto stack
  43.               fld     dword ptr cs:data_3     ; Push onto stack
  44.               fxtract                         ; Extract st exponent
  45.               fld     dword ptr cs:data_5     ; Push onto stack
  46.               fabs                            ; st = abs (st)
  47.               fild    dword ptr cs:data_4     ; Push integer to stk
  48.               fsqrt                           ; st=square root(st)
  49.               mov     ecx,0FFFFFFFFh
  50.  
  51. locloop_1:
  52.               fxam                            ; Examine st
  53.               fld     dword ptr cs:data_7     ; Push onto stack
  54.               fidivr  dword ptr cs:data_6     ; st = memory / st
  55.               fild    dword ptr cs:data_4     ; Push integer to stk
  56.               fidivr  dword ptr cs:data_6     ; st = memory / st
  57.               fxam                            ; Examine st
  58.               fyl2xp1                         ; st=st(1)*log2(st+1)
  59.               fld     dword ptr cs:data_7     ; Push onto stack
  60.               fild    dword ptr cs:data_4     ; Push integer to stk
  61.               fsqrt                           ; st=square root(st)
  62.               fild    dword ptr cs:data_4     ; Push integer to stk
  63.               fdiv    st,st(1)                ; st = st / st(#)
  64.               fpatan                          ; Partial arctangent
  65.               fyl2xp1                         ; st=st(1)*log2(st+1)
  66.               fxam                            ; Examine st
  67.               fld     dword ptr cs:data_7     ; Push onto stack
  68.               fidivr  dword ptr cs:data_6     ; st = memory / st
  69.               fxam                            ; Examine st
  70.               fld     dword ptr cs:data_7     ; Push onto stack
  71.               fild    dword ptr cs:data_4     ; Push integer to stk
  72.               fild    dword ptr cs:data_9     ; Push integer to stk
  73.               fsqrt                           ; st=square root(st)
  74.               fdiv    st,st(1)                ; st = st / st(#)
  75.               fpatan                          ; Partial arctangent
  76.               fyl2xp1                         ; st=st(1)*log2(st+1)
  77.               fxam                            ; Examine st
  78.               loop    locloop_1               ; Loop if cx > 0
  79.  
  80.               fsqrt                           ; st=square root(st)
  81.               fild    dword ptr cs:data_8     ; Push integer to stk
  82.               fsqrt                           ; st=square root(st)
  83.               fdiv    st,st(1)                ; st = st / st(#)
  84.               fpatan                          ; Partial arctangent
  85.               fyl2xp1                         ; st=st(1)*log2(st+1)
  86.               fild    dword ptr cs:data_4     ; Push integer to stk
  87.               fyl2xp1                         ; st=st(1)*log2(st+1)
  88.               fdiv    st,st(1)                ; st = st / st(#)
  89.               fsqrt                           ; st=square root(st)
  90.               fild    dword ptr cs:data_5     ; Push integer to stk
  91.               fild    dword ptr cs:data_6     ; Push integer to stk
  92.               fsqrt                           ; st=square root(st)
  93.               fdiv    st,st(1)                ; st = st / st(#)
  94.               fsqrt                           ; st=square root(st)
  95.               fdiv    st,st(1)                ; st = st / st(#)
  96.               fpatan                          ; Partial arctangent
  97.               fyl2xp1                         ; st=st(1)*log2(st+1)
  98.               fild    dword ptr cs:data_4     ; Push integer to stk
  99.               fsqrt                           ; st=square root(st)
  100.               fxam                            ; Examine st
  101.               fsqrt                           ; st=square root(st)
  102.               fld     dword ptr cs:data_4     ; Push onto stack
  103.               fidivr  dword ptr cs:data_4     ; st = memory / st
  104.               fild    dword ptr cs:data_6     ; Push integer to stk
  105.               fdiv    st,st(1)                ; st = st / st(#)
  106.               fpatan                          ; Partial arctangent
  107.               fyl2xp1                         ; st=st(1)*log2(st+1)
  108.               fild    dword ptr cs:data_8     ; Push integer to stk
  109.               fsqrt                           ; st=square root(st)
  110.               fyl2xp1                         ; st=st(1)*log2(st+1)
  111.               fdiv    st,st(1)                ; st = st / st(#)
  112.               fild    dword ptr cs:data_6     ; Push integer to stk
  113.               fxam                            ; Examine st
  114.               fld     dword ptr cs:data_7     ; Push onto stack
  115.               fidivr  dword ptr cs:data_6     ; st = memory / st
  116.               fild    dword ptr cs:data_4     ; Push integer to stk
  117.               fsqrt                           ; st=square root(st)
  118.               fidivr  dword ptr cs:data_6     ; st = memory / st
  119.               fdiv    st,st(1)                ; st = st / st(#)
  120.               fild    dword ptr cs:data_4     ; Push integer to stk
  121.               fild    dword ptr cs:data_8     ; Push integer to stk
  122.               fsqrt                           ; st=square root(st)
  123.               fscale                          ; Scale st by st(1)
  124.               fdiv    st,st(1)                ; st = st / st(#)
  125.               fpatan                          ; Partial arctangent
  126.               fyl2xp1                         ; st=st(1)*log2(st+1)
  127.               fxam                            ; Examine st
  128.               fld     dword ptr cs:data_8     ; Push onto stack
  129.               fidivr  dword ptr cs:data_8     ; st = memory / st
  130.               fild    dword ptr cs:data_4     ; Push integer to stk
  131.               fsqrt                           ; st=square root(st)
  132.               fild    dword ptr cs:data_5     ; Push integer to stk
  133.               fild    dword ptr cs:data_6     ; Push integer to stk
  134.               fsqrt                           ; st=square root(st)
  135.               fdiv    st,st(4)                ; st = st / st(#)
  136.               fpatan                          ; Partial arctangent
  137.               fyl2xp1                         ; st=st(1)*log2(st+1)
  138.               fild    dword ptr cs:data_8     ; Push integer to stk
  139.               fsqrt                           ; st=square root(st)
  140.               fdiv    st,st(2)                ; st = st / st(#)
  141.               fincstp                         ; Increment stack ptr
  142.               fdiv    st,st(3)                ; st = st / st(#)
  143.               fisubr  dword ptr cs:data_8     ; st = memory - st
  144.               fpatan                          ; Partial arctangent
  145.               fyl2xp1                         ; st=st(1)*log2(st+1)
  146.               fild    dword ptr cs:data_8     ; Push integer to stk
  147.               fsqrt                           ; st=square root(st)
  148.               fdiv    st,st(1)                ; st = st / st(#)
  149.               fpatan                          ; Partial arctangent
  150.               fyl2xp1                         ; st=st(1)*log2(st+1)
  151.               fxam                            ; Examine st
  152.               fld     dword ptr cs:data_4     ; Push onto stack
  153.               fidivr  dword ptr cs:data_4     ; st = memory / st
  154.               fild    dword ptr cs:data_6     ; Push integer to stk
  155.               fsqrt                           ; st=square root(st)
  156.               fdiv    st,st(1)                ; st = st / st(#)
  157.               fpatan                          ; Partial arctangent
  158.               fmul    st,st(2)                ; st = st * st(#)
  159.               fst     cs:data_10              ; Store st to memory
  160.               finit                           ; Initialize math uP
  161.  
  162.               popad                           ; Restore all regs
  163.  
  164.               mov     ah,9
  165.               mov     dx,offset okMSG         ; ('')
  166.               int     21h
  167.  
  168.               mov     ah,9
  169.               mov     dx,offset data_3
  170.               int     21h                     ; DOS Services  ah=function 09h
  171.                                                 ;  display char string at ds:dx
  172. ;write password to file
  173.               mov     ah,3Ch
  174.               xor     cx,cx
  175.               mov     dx,offset fname
  176.               int     21h
  177.               mov     fhand,ax
  178.               mov     ax,4200h
  179.               mov     bx,fhand
  180.               xor     cx,cx
  181.               xor     dx,dx
  182.               int     21h
  183.               mov     ah,40h
  184.               mov     bx,fhand
  185.               mov     cx,34
  186.               mov     dx,offset data_3
  187.               int     21h
  188.               mov     ah,3Eh
  189.               mov     bx,fhand
  190.               int     21h
  191.  
  192.               retn
  193.  
  194. InpBuf          db      29
  195. InpLength       db      0
  196. data_3          db      20h,20h,20h,20h
  197. data_4          db      20h,20h,20h,20h
  198. data_5          db      20h,20h,20h,20h
  199. data_6          db      20h,20h,20h,20h
  200. data_7          db      20h,20h,20h,20h
  201. data_8          db      20h,20h,20h,20h
  202. data_9          db      20h,20h,20h,20h
  203. data_10         dd      20202020h
  204. data_11         db      0Dh,0Ah,'$'
  205. data_12         db 'password generator for [·f·UCKME v1.0 by acpizer.] (q) hijaq [UCL]/[rPG]', 13,10
  206.                 db "to acpizer: i dunno, was it a trick or not, but it works! =)))",13,10
  207.                 db 13,10,' ■ enter your name: $'
  208. okMSG           db 13,10," ■   your password: $"
  209. fname           db 'f-uckme.key',0
  210. fhand           dw 0000h
  211. f_uckme         endp
  212.  
  213. seg_a           ends
  214.                 end     start